// 这个地方可以使用es6模块化的语法导入过来
function Stack() {
  // 栈的属性,以数组的方式实现
  this.item = [];
  //栈的相关操作
  //1，将元素压入栈
  //   this.push = function () {};
  Stack.prototype.push = function (element) {
    return this.item.push(element);
  };
  //2，从栈中取出元素
  Stack.prototype.pop = function () {
    return this.item.pop(); //删除一个元素
  };
  //3，查看一下栈顶元素
  Stack.prototype.peek = function () {
    return this.item[this.item.length - 1];
  };
  //4，判断栈是否为空
  Stack.prototype.isEmpty = function () {
    return this.item.length == 0; //==0 则是空
  };
  //5，获取栈中元素的个数
  Stack.prototype.size = function () {
    return this.item.length;
  };
  //6.tostring方法
  Stack.prototype.toString = function () {
    // 20 10 1 8 7

    let resultString = "";
    for (let i = 0; i < this.item.length; i++) {
      resultString += this.item[i] + " ";
    }
    return resultString;
  };
}

// 封装函数 将10进制转成2进制
function decTObin(decNumber) {
  //1.初始化一个栈
  let stack = new Stack();

  while (decNumber > 0) {
    // 2.1 获取余数，并且放入到栈中
    stack.push(decNumber % 2);
    // 2.2 获取整除后的结果，作为下一次运行的数字
    decNumber = Math.floor(decNumber / 2);
  }
  // 3.从栈中取出0和1
  let binary = "";
  while (!stack.isEmpty()) {
    binary += stack.pop();
  }
  return binary;
}

// 测试10转2进制

console.log("100的二进制是: ", decTObin(100));
